package ace.module.captcha.core.impl.manager;

import ace.cmp.data.spring.data.jdbc.querydsl.rsql.core.manager.DtoManager;
import ace.module.captcha.api.model.dto.CaptchaItemDto;
import ace.module.captcha.core.impl.dao.entity.CaptchaApplication;
import ace.module.captcha.core.impl.dao.entity.CaptchaItem;

/**
 * 验证码 spring data jdbc querydsl rsql manager.
 *
 * @author Caspar
 */
public interface CaptchaItemManager extends DtoManager<CaptchaItem, Long, CaptchaItemDto> {

  /**
   * 检查验证码是否正确
   */
  void verify(Long captchaItemId, String code);

  /**
   * 获取验证码
   *
   * @return
   */
  CaptchaItem getById(Long captchaItemId);

  /**
   * 生成新验证码
   *
   * @param captchaApplication 验证码应用业务类型
   * @param code                      新的验证码值
   * @return 验证码
   */
  CaptchaItem create(CaptchaApplication captchaApplication, String code);

  /**
   * 删除服务端验证码
   *
   * @param id
   */
  boolean remove(Long id);
}
